package model

import (
	"nexus/utils"
	"time"

	"gorm.io/gorm"
)

const TableNameTenant = "tenant"

type Tenant struct {
	ID            string     `gorm:"column:id;primaryKey;type:varchar(255)" json:"id"`                // 租户ID
	Name          string     `gorm:"column:name;type:varchar(255);unique;not null" json:"name"`       // 租户名称
	Status        int        `gorm:"column:status;not null;default:1" json:"status"`                  // 租户状态，1表示启用，0表示禁用
	IsSuper       int        `gorm:"column:is_super;not null;default:0" json:"is_super"`              // 是否为超级租户，1表示是，0表示否
	ServerStartAt string     `gorm:"column:server_start_at;type:varchar(255)" json:"server_start_at"` // 服务开始时间
	ServerEndAt   string     `gorm:"column:server_end_at;type:varchar(255)" json:"server_end_at"`     // 服务结束时间
	CreatedAt     time.Time  `gorm:"column:created_at;not null" json:"created_at"`                    // 创建时间
	UpdatedAt     time.Time  `gorm:"column:updated_at;not null" json:"updated_at"`                    // 更新时间
	DeletedAt     *time.Time `gorm:"column:deleted_at;index;default:null" json:"deleted_at"`          // 删除时间
}

func (*Tenant) TableName() string {
	return TableNameTenant
}

// BeforeCreate GORM Hook - 在创建前生成ID
func (a *Tenant) BeforeCreate(tx *gorm.DB) error {
	if a.ID == "" {
		a.ID = utils.GenerateStringID()
	}
	return nil
}
